The amount of data representing media information, such as a still image and video image, can be extremely large. Further, transmitting digital video information over communication networks can consume large amounts of bandwidth. The cost of transmitting data from one location to another is a function of number of bits transmitted per second. Typically, higher bit transfer rates are associated with increased cost. Higher bit rates can also progressively add to required storage capacities of memory systems, thereby increasing storage cost. Thus, at a given quality level, it can be much more cost effective to use fewer bits, as opposed to more bits, to store digital images and videos. It therefore can be desirable to compress media data for recording, transmitting, or storing.
For a typical compression scheme, achieving higher media quality requires more bits used, which can, in turn, increase cost of transmission and storage. While lower bandwidth traffic may be desired so may higher quality media.
An encoder is a device capable of encoding (e.g., coding) (and sometimes decoding) digital media data. A decoder is a device capable of decoding digital media data. A codec is a device capable of coding and/or decoding digital media data. The term codec is derived from a combination of the terms code and decode, or the terms compress and decompress. A variety of codecs are commercially available. Generally speaking, for example, codec classifications include discrete cosine transfer codecs, fractal codecs, and wavelet codecs. An encoder or codec, by encoding the digital media data, can reduce the number of bits required to transmit signals thereby reducing associated transmission costs.
Video bitstreams typically include prediction of data and a residual error signal that corrects errors in the prediction. Conventional codecs, such as MPEG-2 codecs and H.264 codecs, can generate an inter predictor by employing a first motion vector to obtain a predictor from a past frame and a second motion vector, which can be derived from the first motion vector, to obtain a predictor from a future frame. As such, a new predictor can be generated by combining the predictor from the past frame and the predictor from the future frame. The quality of decoded output bitstreams and the data rate required to achieve desired output quality for conventional codecs can be improved by improving the quality of the prediction. However, prediction methods for conventional codecs still result in a large amount of encoded data.